//package com.yz.design.settlement;
//
//import org.junit.After;
//import org.junit.Before;
//import org.junit.Test;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.util.ArrayList;
//import java.util.Date;
//
//@ActiveProfiles("local")
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
//public class SettlementTest {
//    private static Logger logger = LoggerFactory.getLogger("logs");
//
//    @Before
//    public void before() throws Exception {
//    }
//
//    @After
//    public void after() throws Exception {
//    }
//
//    /**
//     * 保存草稿
//     *
//     * @throws Exception
//     */
//    @Test
//    public void saveDraftTest() throws Exception {
//        logger.debug("保存草稿...");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(null, "0", new ProjectSettlementStrategyImpl());
//        // 设置操作用户
//        settlementContext.setUserId(110);
//        // 设置保存结算备注
//        settlementContext.setRemark("保存草稿备注");
//        // 付款日期
//        settlementContext.setPaymentDate(new Date());
//        // 设置现在要保存的结算明细清单
//        settlementContext.setNowSettlementDetailedList(new ArrayList<>());
//
//        settlementContext.saveDraft();
//    }
//
//    /**
//     * 修改草稿
//     *
//     * @throws Exception
//     */
//    @Test
//    public void editDraftTest() throws Exception {
//        logger.debug("修改草稿...");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(23, "0", new ProjectSettlementStrategyImpl());
//        // 设置操作用户
//        settlementContext.setUserId(110);
//        // 设置保存结算备注
//        settlementContext.setRemark("修改草稿备注");
//        // 付款日期
//        settlementContext.setPaymentDate(new Date());
//        // 设置现在要保存的结算明细清单
//        settlementContext.setNowSettlementDetailedList(new ArrayList<>());
//
//        settlementContext.saveDraft();
//    }
//
//
//    /**
//     * 删除草稿
//     *
//     * @throws Exception
//     */
//    @Test
//    public void deleteDraftTest() throws Exception {
//        logger.debug("删除草稿...");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(23, "0", new ProjectSettlementStrategyImpl());
//        settlementContext.setRemark("删除草稿备注");
//        settlementContext.removeDraft();
//    }
//
//    /**
//     * 直接保存结算
//     * 1.设置结算单上下文需要数据
//     * 2.设置收付款城市
//     * 3.保存草稿
//     * 4.付款（验证保存的参数，更改状态，添加流水）
//     *
//     * @throws Exception
//     */
//    @Test
//    public void saveSettlementTest() throws Exception {
//        logger.debug("直接保存结算....");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(null, "1", new ProjectSettlementStrategyImpl());
//        // 设置操作用户
//        settlementContext.setUserId(110);
//        // 设置保存结算备注
//        settlementContext.setRemark("结算备注");
//        // 设置现在要保存的结算明细清单
//        settlementContext.setNowSettlementDetailedList(new ArrayList<>());
//        // 付款日期
//        settlementContext.setPaymentDate(new Date());
//        // 标志直接保存
//        settlementContext.setSettlementStatus("1");
//        // 保存草稿
//        settlementContext.saveDraft();
//        // 设置付款城市站
//        settlementContext.setPayContext(new CitySiteSettlementContext(1, "1", new DealCitySiteSettlementServiceImpl()));
//        // 设置收款城市站
//        settlementContext.setReceiveContext(new CitySiteSettlementContext(2, "1", new ChannelCitySiteSettlementServiceImpl()));
//        // 付款
//        settlementContext.getPayContext().payTo(settlementContext);
//    }
//
//    /**
//     * 直接修改保存结算
//     * 1.设置结算单上下文需要数据（收付款城市站，已存在结算明细）
//     * 3.付款（验证保存的参数，更改状态，添加流水）
//     *
//     * @throws Exception
//     */
//    @Test
//    public void editSettlementTest() throws Exception {
//        logger.debug("直接修改保存结算....");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(23, "1", new ProjectSettlementStrategyImpl());
//        // 设置操作用户
//        settlementContext.setUserId(110);
//        // 设置保存结算备注
//        settlementContext.setRemark("修改结算备注");
//        // 设置现在要保存的结算明细清单
//        settlementContext.setNowSettlementDetailedList(new ArrayList<>());
//        // 付款日期
//        settlementContext.setPaymentDate(new Date());
//        // 保存草稿
//        settlementContext.saveDraft();
//        // 付款
//        settlementContext.getPayContext().payTo(settlementContext);
//
//    }
//
//    /**
//     * 撤销结算
//     * 1.更改结算状态
//     * 2.重置回原来流水
//     *
//     * @throws Exception
//     */
//    @Test
//    public void cancelSettlementTest() throws Exception {
//        logger.debug("直接修改保存结算....");
//        // 创建项目方结算上下文
//        SettlementContext settlementContext = new SettlementContext(23, "1", new ProjectSettlementStrategyImpl());
//        // 设置操作用户
//        settlementContext.setUserId(110);
//        // 设置撤销结算备注
//        settlementContext.setRemark("撤销结算备注");
//        // 付款城市站撤销付款
//        settlementContext.getPayContext().cancelPayTo(settlementContext);
//        // 收款城市站撤销
//        settlementContext.getReceiveContext().cancelReceiveFrom(settlementContext);
//
//    }
//
//
//}
